Skip to content

Cuvs lucene move - #2353

Open
imotov wants to merge 135 commits into
NVIDIA:mainfrom
imotov:cuvs-lucene-move
Open

Cuvs lucene move#2353
imotov wants to merge 135 commits into
NVIDIA:mainfrom
imotov:cuvs-lucene-move

Conversation

@imotov

@imotov imotov commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Moves cuvs-lucene into java/cuvs-lucene folder of cuVs.

This is a preliminary PR to validate CI scripts. We'll need to rerun parts of the process and rebase the PR when we're ready to make the move. So, please ignore all changes in java/cuvs-lucene directory except for build-related changes.

Open questions:

  • Do we want to have a separate cuvs-lucene-codeowners or do we use cuvs-java-codeowners?

Timeline for the move:

  • Right after 26.08 release
    • Merge this PR to main with no-squash and move all new cuvs-lucene development to cuvs wi
    • Add a note to cuvs-lucene that all new development and all issues should be now go to this repo
  • Between 26.08 release and 26.10 code freeze
    • Move all still relevant cuvs-lucene PRs and issue to cuvs repo, close the rest.
    • Update release process to publish cuvs-lucene jars from this project instead of cuvs-lucene
    • Remove references to the cuvs-lucene repo in various other parts of our infrastructure (like the job that triggers nightly builds there)
  • After 26.10 code freeze and when all issue and PRs are move to this repo

Preparation script for cuvs-lucene:

git clone [git@github.com](mailto:git@github.com):NVIDIA/cuvs-lucene.git cuvs-lucene-move
cd cuvs-lucene-move
git filter-repo --to-subdirectory-filter java/cuvs-lucene --replace-message ../message-filter.txt
cd ../cuvs
git remote add cuvs-lucene-origin ../cuvs-lucene-move
git fetch cuvs-lucene-origin
git merge --allow-unrelated-histories cuvs-lucene-origin/main
# Comment message:
# Merge main branch of 'cuvs-lucene' into cuvs
git remote remove cuvs-lucene-origin

message-filter.txt

regex:(?<![\w/])#(\d{1,3})\b==>NVIDIA/cuvs-lucene#\1

See NVIDIA/cuvs-lucene#168

cjnolet and others added 30 commits June 5, 2025 10:12
…s-lucene#2)

Fixes NVIDIA/cuvs-lucene#1 

Things included in this PR:
- Add the spotless maven plugin configuration.
- Add the gitignore file.
- Add a source license-header file that is used by the spotless plugin (to add/update license headers automatically if missing).
- Update the readme file.

Authors:
  - Vivek Narang (https://github.com/narangvivek10)
  - Gil Forsyth (https://github.com/gforsyth)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)
  - MithunR (https://github.com/mythrocks)

URL: NVIDIA/cuvs-lucene#2
Fixes NVIDIA/cuvs-lucene#5 

Main changes in this PR:
- Adapt to the cuVS-Java API updates: Mainly replace the use of `Dataset` with the new `CuVSMatrix`
- Disable the tests that use byte vector encoding, as we do not support it.

Authors:
  - Vivek Narang (https://github.com/narangvivek10)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#10
This PR adds a few additional needed changes to enable CI.

- change permission to make `.sh` files executable
- removes unnecessary configuration from `.pre-commit-config.yaml`, `CODEOWNERS`, `dependencies.yaml`
- updates all `pre-commit` hooks
- adds `rapids-dependency-file-generator` hook (to validated `dependencies.yaml`)
- fixes all issues found by `pre-commit` hooks (broken shell scripts, trailing whitespace, etc.)
- fixes versioning in `pom.xml`

Authors:
  - Dante Gama Dessavre (https://github.com/dantegd)
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - James Lamb (https://github.com/jameslamb)
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#15
* updates `rapids-dependency-file-generator`, to pull in changes from rapidsai/dependency-file-generator#163
* removes unnecessary error-trapping in shell scripts

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

URL: NVIDIA/cuvs-lucene#19
Contributes to rapidsai/build-planning#208

* uses CUDA 13.0.0 to build and test (using the same patterns from the `cuvs-java` tests, in NVIDIA#1273)

## Notes for Reviewers

This switches GitHub Actions workflows to the `cuda13.0` branch from here: rapidsai/shared-workflows#413

A future round of PRs will revert that back to `branch-25.10`, once all of RAPIDS supports CUDA 13.

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Jake Awe (https://github.com/AyodeAwe)
  - Ben Frederickson (https://github.com/benfred)
  - rhdong (https://github.com/rhdong)

URL: NVIDIA/cuvs-lucene#20
Contributes to rapidsai/build-planning#208

Now that rapidsai/shared-workflows#413 is
merged, this converts all GitHub Actions references from `@cuda13.0`
back to `branch-25.10`.

## Notes for Reviewers

This is safe to admin-merge because the change is a no-op... configs on
those 2 branches are identical.
…cene#22)

This PR configures this repo (adds a `.github/release.yml` file) for
automatic release notes generation. See
https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes.
This will fix such issues as hotfix releases including wrong content
(e.g [cugraph
v25.04.01](https://github.com/rapidsai/cugraph/releases/tag/v25.04.01)
contains 50+ PRs from the full v25.04.00 release when it should only
contain the single hotfix PR (#5017).)

Example auto-generated release notes:
https://github.com/rapidsai/literate-octo-potato/releases/tag/v25.10.00a
… prefiltering (NVIDIA/cuvs-lucene#14)

Refactoring, CI fixes (pulling libcuvs from pypi if not found), prefiltering support.

Added tests:
* TestCuVSGaps (for missing vectors in documents)
* TestCuVSDeletedDocuments (for deleted vectors, that will leverage prefiltering)
* TestMerge (dedicated test for testing merges)

Authors:
  - Ishan Chattopadhyaya (https://github.com/chatman)
  - Vivek Narang (https://github.com/narangvivek10)

Approvers:
  - Mike Sarahan (https://github.com/msarahan)
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#14
Introducing a new Codec that uses CAGRA for building the index on GPU and serializing to Lucene-compatible HNSW index segments. The Lucene-compatible segments are searchable via the `Lucene99HnswVectorsReader` (which is the default in Lucene 10.x). 

Note: This is based on top of NVIDIA/cuvs-lucene#14 and should be rebased once that is merged.

TODO:
- Benchmarks and more tests
- Further refactoring to split the `CuVSVectorsFormat` into GPU and CPU-specific formats. 

Fixes NVIDIA/cuvs-lucene#13

Authors:
  - Vivek Narang (https://github.com/narangvivek10)
  - Puneet Ahuja (https://github.com/punAhuja)
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Ishan Chattopadhyaya (https://github.com/chatman)
  - Corey J. Nolet (https://github.com/cjnolet)
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

URL: NVIDIA/cuvs-lucene#16
…n to give detailed stack traces and information on tests (NVIDIA/cuvs-lucene#25)

Fixes NVIDIA/cuvs-lucene#26

Authors:
  - Vivek Narang (https://github.com/narangvivek10)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#25
…cene upgrades (NVIDIA/cuvs-lucene#29)

As per [last night's comment on the Solr Jira issue](https://issues.apache.org/jira/browse/SOLR-17892?focusedCommentId=18024203&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-18024203) we realized that exposing the Lucene Codecs in the SPI registry prevents any calling application from being able to upgrade the codec because, under the hood, the next version of Lucene moves the older codec (Lucene101) into a different package name. 
As a result, we should only provide the relevant vector format, reader, and writer, and the calling application needs to wrap them into its own FilterCodec. 

For the sake of the current tests, we have decided to move the codec classes into the tests so that they are not bundled in the artifacts. 

This issue is a blocker for the inclusion of cuvs Lucene in Solr or any other Lucene-based search engine.

Authors:
  - Vivek Narang (https://github.com/narangvivek10)
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Ishan Chattopadhyaya (https://github.com/chatman)
  - MithunR (https://github.com/mythrocks)

URL: NVIDIA/cuvs-lucene#29
…cuvs-lucene#30)

We were inadvertently copying over the vectors from a list to an array before creating the CuVSMatrix instance. This is memory inefficient.

Authors:
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#30
…VIDIA/cuvs-lucene#31)

* cuvs-java 25.10 is released, use that from Maven Central
* There's a blocker bug for Solr integration where single vector indexes cause a Solr crash. Adding a graceful handling for that.
* Updated README.md with a more accurate description of the project.

Authors:
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#31
Contributes to rapidsai/build-planning#224

## Notes for Reviewers

This is safe to admin-merge because the change is a no-op... configs on
those 2 branches are identical.
This commit fixes the publication of cuvs-lucene artifacts to Github.

The Github actions build-logs indicate that while the JAR is built correctly, it doesn't seem to be uploaded properly as a Github artifact. It appears to be the result of a minor typo in the artifact's base dir.

This commit fixes the typo, and allows the artifact to be published.

Authors:
  - MithunR (https://github.com/mythrocks)

Approvers:
  - Nate Rock (https://github.com/rockhowse)

URL: NVIDIA/cuvs-lucene#34
jamxia155 and others added 10 commits July 29, 2026 16:58
…vs-lucene#186)

Contributes to rapidsai/build-planning#305

Proposes enforcing `yamllint` checks here. My primary motivation is to catch correctness issues in `dependencies.yaml` files, like duplicate entries silently resolving to the last one or indentation mistakes leading to filters being ignored.

But this also has some side benefits for consistency, which makes it a bit easier to write automation.

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Bradley Dice (https://github.com/bdice)
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#186
When `main` flipped from version 26.08 to 26.10, some CI here broke because GitHub Actions configurations had hard-coded references to container images no longer built from https://github.com/rapidsai/ci-imgs. This had to be fixed like this:

* NVIDIA/cuvs-lucene#182
* NVIDIA/cuvs-lucene#179

To avoid that happening again, this proposes changes similar to NVIDIA#2340 ... dynamically generating the matrix of supported versions from the shared `rapidsai/shared-workflows` repo.

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Igor Motov (https://github.com/imotov)
  - Bradley Dice (https://github.com/bdice)

URL: NVIDIA/cuvs-lucene#189
Companion PR to [cuvs!2035](NVIDIA#2035), addresses NVIDIA/cuvs-lucene#124.

Existing CAGRA search code path for each search query:
- Call CAGRA search API on one index segment
- Copy results back to host
- Add results into host-side global top-k priority queue
- Repeat for all index segments

Proposed change:
- Leverage new multi-segment CAGRA search API to launch all per-segment searches in one API call
- Leave results on device and run GPU-accelerated select-k API to compute global top-k
- Copy final top-k results to host

Authors:
  - James Xia (https://github.com/jamxia155)

Approvers:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)
  - Corey J. Nolet (https://github.com/cjnolet)
  - Bradley Dice (https://github.com/bdice)

URL: NVIDIA/cuvs-lucene#133
…-to-work-with-dataset-changes

Serialize CAGRA index with device-padded dataset layout
@imotov
imotov force-pushed the cuvs-lucene-move branch from 085107c to abc9903 Compare August 4, 2026 22:37
@imotov
imotov force-pushed the cuvs-lucene-move branch from abc9903 to b57e9c9 Compare August 4, 2026 22:55
@imotov

imotov commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test b57e9c9

@imotov

imotov commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test f251a6a

@imotov
imotov marked this pull request as ready for review August 5, 2026 20:33
@imotov
imotov requested review from a team as code owners August 5, 2026 20:33
@imotov
imotov requested a review from jameslamb August 5, 2026 20:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.